package com.rede.didiok.community.service;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rede.didiok.common.dto.community.MomentCommentDto;
import com.rede.didiok.community.entity.MomentCommentEntity;

/**
 * 用户动态评价表
 *
 * @author Rede
 * @email didiok@foxmail.com
 * @date 2023-09-13 08:18:34
 */
public interface MomentCommentService extends IService<MomentCommentEntity> {


    /***************************** admin:start **************************/
    // region  didiok-admin

    /**
     * 审核评论
     *
     * @param memberCommentDto
     * @return
     */
    String auditComment(MomentCommentDto momentCommentDto);

    /**
     * 获取评论列表
     *
     * @param memberCommentDto
     * @return
     */
    IPage<MomentCommentEntity> getPageList(MomentCommentDto momentCommentDto);


    /**
     * 评论转换
     *
     * @param commentList
     * @return
     */
    List<MomentCommentEntity> convertCommentList(Collection<MomentCommentEntity> commentList);

    /**
     * 新增评论
     *
     * @param memberCommentDto
     */
    String addComment(MomentCommentDto momentCommentDto);

    /**
     * 编辑评论
     *
     * @param memberCommentDto
     */
    String editComment(MomentCommentDto momentCommentDto);

    /**
     * 删除评论
     *
     * @param memberCommentDto
     */
    String deleteComment(MomentCommentDto momentCommentDto);

    /**
     * 批量删除评论
     *
     * @param commentVOList
     */
    String deleteBatchComment(List<MomentCommentDto> commentDtoList);

    // endregion
    /***************************** admin:end **************************/



    /***************************** web:start **************************/
    // region didiok-web

    /**
     * 获取用户评论列表
     *
     * @param commentDto
     * @return
     */
    IPage<MomentCommentEntity> getUserCommentList(MomentCommentDto commentDto);

    /**
     * 根据id获取榜单成员评论
     * @param uid
     * @return
     */
    MomentCommentEntity getCommentById(String uid);

    /**
     * 评论下架
     * @param uid
     * @return
     */
    Boolean revocationComment(String uid);

    /**
     * 获取评论数目
     *
     * @author
     * @date 2023年10月22日下午3:43:38
     */
    Integer getCommentCount(String createUserUid, String momentUid, String toUserUid);

    // endregion
    /***************************** web:end **************************/

    /**
     * 根据业务id获取评论列表
     *
     * @param commentVO
     * @return
     */
    Map<String, List<MomentCommentEntity>> getCommentMapByBusinessId(MomentCommentDto momentCommentDto);

    /**
     * 根据id集合查询评论
     * @param uidList
     * @return
     */
    List<MomentCommentEntity> getCommentPageListByIds(Collection<String> uidList);

    /**
     * 添加评论（当该评论不是一级评论时，需要设置一级评论UID字段）
     * @param comment
     * @return
     */
    MomentCommentEntity addCommentWithFirstCommentUid(MomentCommentDto comment);

    /**
     * 根据条件查询评论列表
     * @param page
     * @param comment
     * @return
     */
    IPage<MomentCommentEntity> queryPageWithMoment(Page<MomentCommentEntity> page, MomentCommentDto comment);
}

